#pragma once
#include "VCBase.h"
#include "VCRefPtr.h"
#include "PPMacros.h"
#include <string>


namespace LBPROJSTREAM
{
    class IProjPlanStreamDatabase;
}

namespace LBPROJ
{
    class ITaskGroup;
    class ICalendar;

    class IPPContext : public IBaseObject
    {
    public:
        virtual ~IPPContext() { }

    public:
        virtual void SetID(const std::wstring&) const = 0;
        virtual const std::wstring& GetID() const = 0;

        virtual CRefPtr<ITaskGroup> GetTaskGroup() = 0;
        virtual CRefPtr<ICalendar> GetCalendar() const = 0;

        virtual bool Open(LBPROJSTREAM::IProjPlanStreamDatabase* pDb) = 0;
        virtual bool Write(LBPROJSTREAM::IProjPlanStreamDatabase* pDb) const = 0;

    protected:
        IPPContext() { }

    private:
    };


    PROJECTPLAN_API CRefPtr<IPPContext> CreateContext();
}
